home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 20 / Cream of the Crop 20 (Terry Blount) (1996).iso / doom / cddk9605.zip / HEADERS.ARJ / IO.INT < prev    next >
Text File  |  1996-05-17  |  24KB  |  715 lines

  1.  
  2. { ───────────────────────────────────────────────────────────────────────── }
  3. {  Name        : IO.PAS                                                     }
  4. {  Description : Concerto Input/Output Engine                               }
  5. { ───────────────────────────────────────────────────────────────────────── }
  6.  
  7. UNIT IO;
  8.  
  9. {         (outbound characters)                                             }
  10. {                  ││                                                       }
  11. {            ┌─────┴┴─────┐                                                 }
  12. {            │ Zero-State │                                                 }
  13. {            │   Driver   │                                                 }
  14. {            └─┬────────┬─┘                       ┌────────┐                }
  15. {              │        │                ┌───────>│ Driver │  (FOSSIL)      }
  16. {          (HotChar) (Other)             │        └────────┘                }
  17. {              │        │                │        ┌────────┐                }
  18. {     ┌────────┴─┐      │    ┌───────────┴┐    ┌─>│ Driver │  (CRT)         }
  19. {     │ External │      └───>│   Driver   ├────┘  └────────┘                }
  20. {     │  Driver  ├──────────>│ Collection ├────┐  ┌────────┐                }
  21. {     └──────────┘           └───────────┬┘    └─>│ Driver │  (ImageLog)    }
  22. {                                        │        └────────┘                }
  23. {                                        │        ┌────────┐                }
  24. {                                        └───────>│ Driver │  (Other)       }
  25. {                                                 └────────┘                }
  26.  
  27.  
  28. {$B-} { . . . . . . . . . . . . . . . . . . . . Shortcut boolean evaluation }
  29. {$F+} { . . . . . . . . . . . . . . . . . . . .  Force far calls for safety }
  30. {$I-} { . . . . . . . . . . . . . . . . . . . Disable input/output checking }
  31. {$O+} { . . . . . . . . . . . . . . . . . . Allow this unit to be overlayed }
  32. {$Q-} { . . . . . . . . . . . . . .  Do not generate overflow-checking code }
  33. {$R-} { . . . . . . . . . . . . . . . . Do not generate range-checking code }
  34. {$S-} { . . . . . . . . . . . . . . . . Do not generate stack-checking code }
  35. {$X+} { . . . . . . . . . . . Extended syntax for pChars and function calls }
  36.  
  37. INTERFACE
  38.  
  39. USES
  40.   Objects;
  41.  
  42. CONST
  43.   MaxStateDrivers = 50;
  44.  
  45. TYPE
  46.  
  47.   tColorScheme = RECORD
  48.     Lower : Byte;                     { . . . . . . . .  Lower case letters }
  49.     Upper : Byte;                     { . . . . . . . .  Upper case letters }
  50.     Digit : Byte;                     { . . . . . . . . .  Digits (numbers) }
  51.     HiBit : Byte;                     { . . . IBM Extended ASCII characters }
  52.     Punct : Byte;                     { .  Punctuation and misc. characters }
  53.     END;
  54.  
  55.   pColorScheme = ^tColorScheme;
  56.  
  57.  
  58.   { ┌─────────────────────────────────────────────────────────────────────┐ }
  59.   { │▒▒▒ tIODriver ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ │ }
  60.   { └─────────────────────────────────────────────────────────────────────┘ }
  61.   {                                                                         }
  62.   { The I/O Driver is one of the fundamental concepts of Concerto.  The     }
  63.   { stream of outbound characters is multiplexed (sprinkled) through all of }
  64.   { the I/O drivers registered with the system. Each I/O driver is merely a }
  65.   { descendent of tIODriver.                                                }
  66.  
  67.   tIODriver = OBJECT(tObject)
  68.  
  69.     Active  : Boolean;               { . . Is this driver currently active? }
  70.     NameCRC : LongInt;               { The 32-bit CRC of the driver's name. }
  71.  
  72.     CONSTRUCTOR Init(p:pChar);
  73.  
  74.     { Default behavior of each method                                       }
  75.     {                                                                       }
  76.     {     Abstract : run-time error 211                                     }
  77.     {     Ignore   : no operation                                           }
  78.     {     Other    : calls other methods                                    }
  79.  
  80.     PROCEDURE ClrEOL;                               VIRTUAL;     { Ignore   }
  81.     PROCEDURE ClrScr;                               VIRTUAL;     { Ignore   }
  82.     PROCEDURE Color(c:Byte);                        VIRTUAL;     { Ignore   }
  83.     PROCEDURE CursorDown(n:Byte);                   VIRTUAL;     { Ignore   }
  84.     PROCEDURE CursorLeft(n:Byte);                   VIRTUAL;     { Ignore   }
  85.     PROCEDURE CursorRight(n:Byte);                  VIRTUAL;     { Ignore   }
  86.     PROCEDURE CursorUp(n:Byte);                     VIRTUAL;     { Ignore   }
  87.     PROCEDURE GotoXY(x,y:Byte);                     VIRTUAL;     { Ignore   }
  88.     PROCEDURE Home;                                 VIRTUAL;     { Other    }
  89.     PROCEDURE PurgeInbound;                         VIRTUAL;     { Ignore   }
  90.     PROCEDURE PurgeOutbound;                        VIRTUAL;     { Ignore   }
  91.     PROCEDURE ReadChar(VAR c:Char);                 VIRTUAL;     { Abstract }
  92.     PROCEDURE SendChar(c:Char);                     VIRTUAL;     { Abstract }
  93.     PROCEDURE SendData(p:Pointer; s:Word);          VIRTUAL;     { Other    }
  94.     PROCEDURE SendpChar(p:pChar);                   VIRTUAL;     { Other    }
  95.     PROCEDURE SendString(CONST s:OpenString);       VIRTUAL;     { Other    }
  96.     FUNCTION  Waiting:Boolean;                      VIRTUAL;     { Abstract }
  97.     END;
  98.  
  99.   pIODriver = ^tIODriver;
  100.  
  101.  
  102.   { ┌─────────────────────────────────────────────────────────────────────┐ }
  103.   { │▒▒▒ tIODriverTextGfx ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ │ }
  104.   { └─────────────────────────────────────────────────────────────────────┘ }
  105.  
  106.   { This descendent of tIODriver overrides the color/cursor procedures.     }
  107.   { The calls are converted to ASCII/ANSI/AVATAR text codes.                }
  108.  
  109.   tIODriverTextGfx = OBJECT(tIODriver)
  110.  
  111.     Graphics : Byte;
  112.  
  113.     PROCEDURE ClrEOL;               VIRTUAL;
  114.     PROCEDURE ClrScr;               VIRTUAL;
  115.     PROCEDURE Color(c:Byte);        VIRTUAL;
  116.     PROCEDURE CursorLeft(n:Byte);   VIRTUAL;
  117.     PROCEDURE CursorRight(n:Byte);  VIRTUAL;
  118.     PROCEDURE GotoXY(x,y:Byte);     VIRTUAL;
  119.     END;
  120.  
  121.   pIODriverTextGfx = ^tIODriverTextGfx;
  122.  
  123.  
  124.   { ┌─────────────────────────────────────────────────────────────────────┐ }
  125.   { │▒▒▒ tIODriverRemote ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ │ }
  126.   { └─────────────────────────────────────────────────────────────────────┘ }
  127.   {                                                                         }
  128.   { This object provides additional support for I/O drivers used in a       }
  129.   { communications setting.  You will still need to override the IO-        }
  130.   { specific methods.  Since many remote terminals use ANSI and other color }
  131.   { protocols, this object is a descendent of tIODriverTextGfx.             }
  132.  
  133.   tIODriverRemote = OBJECT(tIODriverTextGfx)
  134.  
  135.     Baud    : LongInt;
  136.     ComPort : Word;
  137.     Locked  : LongInt;
  138.  
  139.     CONSTRUCTOR Init(p:pChar; c:Word; b,l:LongInt);
  140.  
  141.     FUNCTION  CarrierDetect:Boolean;  VIRTUAL;
  142.     PROCEDURE LowerDTR;               VIRTUAL;
  143.     PROCEDURE RaiseDTR;               VIRTUAL;
  144.     PROCEDURE SetBaud(b,l:LongInt);   VIRTUAL;
  145.     END;
  146.  
  147.   pIODriverRemote = ^tIODriverRemote;
  148.  
  149.  
  150.   { ┌─────────────────────────────────────────────────────────────────────┐ }
  151.   { │▒▒▒ tStateDriver ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ │ }
  152.   { └─────────────────────────────────────────────────────────────────────┘ }
  153.  
  154.   { The state driver system allows you to install any color protocol without
  155.     recompiling the IO unit.  This system will be documented in the next
  156.     release. }
  157.  
  158.   tStateDriver = RECORD
  159.     Active  : Boolean;             { . . . . . Is this state driver active? }
  160.     Handler : PROCEDURE (c:Char);  { . . Who gets the stream of characters? }
  161.     NameCRC : LongInt;             { The 32-bit CRC of the driver's family. }
  162.     END;
  163.  
  164.   pStateDriver = ^tStateDriver;
  165.  
  166. CONST
  167.  
  168.   ColorScheme    : pColorScheme = NIL;    { . . . . .  Current color scheme }
  169.   DBS            : Boolean     =